package org.wenshu.ai.example;

import dev.langchain4j.data.message.AiMessage;
import dev.langchain4j.data.message.ChatMessage;
import dev.langchain4j.data.message.UserMessage;
import dev.langchain4j.model.chat.response.ChatResponse;
import dev.langchain4j.model.chat.response.StreamingChatResponseHandler;
import dev.langchain4j.model.openai.OpenAiStreamingChatModel;

import java.util.ArrayList;
import java.util.List;

import static dev.langchain4j.model.openai.OpenAiChatModelName.GPT_4_O_MINI;
import static java.time.Duration.ofSeconds;

public class _06_FewShot {

    public static void main(String[] args) {

        OpenAiStreamingChatModel model = OpenAiStreamingChatModel.builder()
            .baseUrl("https://maas-api.cn-huabei-1.xf-yun.com/v1")
            .apiKey("your-key")
            .modelName("xdeepseekv3")
                .timeout(ofSeconds(100))
                .build();

        List<ChatMessage> fewShotHistory = new ArrayList<>();

        // 添加正面反馈示例到历史记录
        fewShotHistory.add(UserMessage.from(
                "我很喜欢这次更新！界面非常友好，新功能也很棒！"));
        fewShotHistory.add(AiMessage.from(
                "操作：转发输入到正面反馈存储\n回复：非常感谢您的宝贵反馈！我们已经将您的消息转达给产品开发团队，他们一定会很高兴听到这个消息。希望您继续享受使用我们的产品。"));

        // 添加负面反馈示例到历史记录
        fewShotHistory.add(UserMessage
                .from("在Android设备上更新后经常崩溃。"));
        fewShotHistory.add(AiMessage.from(
                "操作：创建新工单 - Android更新后崩溃\n回复：非常抱歉给您带来困扰。我们已经将这个问题报告给开发团队，并会确保尽快解决这个问题。修复完成后我们会发送邮件通知您，如果您需要任何帮助，我们随时为您服务。"));

        // 添加另一个正面反馈示例到历史记录
        fewShotHistory.add(UserMessage
                .from("你们的应用让我的日常工作变得更容易了！向团队致敬！"));
        fewShotHistory.add(AiMessage.from(
                "操作：转发输入到正面反馈存储\n回复：非常感谢您的好评！我们很高兴听到我们的应用能让您的日常工作更轻松。您的反馈已经分享给我们的团队。希望您继续享受使用我们的应用！"));

        // 添加另一个负面反馈示例到历史记录
        fewShotHistory.add(UserMessage
                .from("新功能不能按预期工作，导致数据丢失。"));
        fewShotHistory.add(AiMessage.from(
                "操作：创建新工单 - 新功能导致数据丢失\n回复：对于造成的不便，我们深表歉意。您的反馈对我们来说非常重要，我们已经将这个问题报告给技术团队。他们正在优先处理这个问题。我们会持续更新进展，并在问题解决后通知您。感谢您的耐心和支持。"));

        // 添加真实用户消息
        ChatMessage customerComplaint = UserMessage
                .from("你们的应用怎么这么慢？请解决一下这个问题！");
        fewShotHistory.add(customerComplaint);

        System.out.println("[用户]: " + customerComplaint.text());
        System.out.print("[LLM]: ");

        model.chat(fewShotHistory, new StreamingChatResponseHandler() {

            @Override
            public void onPartialResponse(String partialResponse) {
                System.out.print(partialResponse);
            }

            @Override
            public void onCompleteResponse(ChatResponse completeResponse) {
            }

            @Override
            public void onError(Throwable throwable) {
                throwable.printStackTrace();
            }
        });

        // 提取回复并发送给客户
        // 在后端执行必要的操作
    }
}
